An operating system (OS) is a program that controls the function of a computing device and manages other programs running on the computing device. An OS can also provide an interface for a user to interact with a computer. An OS is typically launched when a computer system is started, and can allow the computer to run programs, manage files, and control peripheral devices. Examples of operating systems include the Macintosh OS by Apple Inc. of Cupertino, Calif., the Windows OS by Microsoft of Redmond, Wash., and the Unix OS.
An OS is often stored on a mass memory storage device, such as a hard drive or Compact Disc-Read Only Memory (CD-ROM), and is loaded into a memory once a computer is turned on by a user. The process of starting a computer and loading an OS so that the computer is ready to use is known as booting. An boot sequence can take up to two minutes or more to complete. This is because of increasingly complex and large operating systems that are now being used with computers. When a computer boots, large amounts of data must be copied from a mass storage device, such as a hard drive, into a memory, such as a random access memory (RAM). The mass storage device has a much slower data transfer rate than the remainder of the computer system and is usually the bottleneck that increases boot times. Processors typically must wait for data to be transferred from a mass storage device to a memory before the data can be used. Computer users now expect more appliance-like behavior from their computers, which requires a system to be ready soon after it is turned on. It is therefore desirable to reduce the amount of time necessary for an OS to boot.
FIG. 1 is a flowchart which illustrates a typical computer boot sequence. The process 10 detailed here is typical for computer systems. At block 12, the user starts a computer by, for example, pressing an “on” button, and the boot process or boot sequence begins. At block 14, the computer initializes various hardware, such as a microprocessor, memories, hard drives, display adapters, and input/output (I/O) adapters. The hardware initialization in block 14 may be performed by a basic input/output system (BIOS), which is often stored in a semiconductor read only memory. In block 16, the computer searches for a boot device. A boot device is a device containing the code that will boot a computer system, and may be a device such as a floppy disk, a hard drive, or a CD-ROM. In block 18, a system file is loaded from the boot device. A system file contains the core of the operating system that will be loaded into memory and will control a computer system. At block 20, the operating system which was started in block 18 loads various extensions. Extensions allow the operating system to communicate with peripheral devices such as displays, printers, keyboards, mice, or other I/O devices. After the extensions are loaded, the operating system searches for and loads start up items in block 22. Start up items include programs that the user, the operating system, or other programs have designated to be started when the system boots. Once the operating system has loaded the start up items, the process 10 moves on to block 24 where the computer system is ready for the user.
As can be seen in FIG. 1, there are several steps that are necessary to boot a computer system. These several steps can often be quite time consuming and can lead to a lengthy boot time. It is therefore desirable to reduce the amount of time necessary to progress from block 12 to block 24, or to reduce the amount of time that it takes for a computer system to be ready for user input after a user turns the computer system on.